Finding the Next Open Slot

Open Addressing Probes


개방주소(open addressing)는 배열 한 칸에 항목 하나만 두고, 충돌하면 정해진 조사 순서에 따라 같은 표 안의 다른 칸을 찾는다. 저장할 때 이동한 경로를 찾을 때도 똑같이 따라가야 한다.

linear probingh(k), h(k) + 1, h(k) + 2, … 순서로 한 칸씩 본다.
탐색의 멈춤같은 키를 만나면 성공, 처음부터 빈 칸을 만나면 실패다.
조사 방식quadratic probing은 i², double hashing은 키별 간격 h₂(k)만큼 떨어진 칸을 본다.

linear probing은 충돌하면 다음 칸으로 한 칸씩 이동한다

단계를 옮기면 키 31, 54, 77, 44, 55, 20을 차례로 m = 11인 표에 넣고, 시작 인덱스에서 빈 칸을 찾을 때까지 확인한 인덱스가 바뀐다.

칸 위 숫자는 인덱스다. 파란 칸은 방금 넣은 키가 지나간 칸, 초록 테두리 칸은 저장한 칸, 점선 칸은 빈 칸이다.

조사 방식에 따라 다음 후보 칸이 달라진다

조사 방식을 바꾸면 인덱스 0, 1, 4, 5, 9가 차 있는 표에 h(55) = 0인 55를 넣을 때 확인하는 후보 순서와 저장 위치가 바뀐다.

칸 위 숫자는 인덱스다. 파란 칸은 확인했지만 차 있던 후보, 초록 테두리 칸은 55를 저장한 칸이다.